description = "Spring Aspects"

apply plugin: "io.freefair.aspectj"

compileAspectj {
	sourceCompatibility "17"
	targetCompatibility "17"
	ajcOptions {
		compilerArgs += "-parameters"
	}
}
compileTestAspectj {
	sourceCompatibility "17"
	targetCompatibility "17"
	ajcOptions {
		compilerArgs += "-parameters"
	}
}

dependencies {
	api("org.aspectj:aspectjweaver")
	compileOnly("org.aspectj:aspectjrt")
	optional(project(":spring-aop"))  // for @Async support
	optional(project(":spring-beans"))  // for @Configurable support
	optional(project(":spring-context"))  // for @Enable* support
	optional(project(":spring-context-support"))  // for JavaMail and JSR-107 support
	optional(project(":spring-orm"))  // for JPA exception translation support
	optional(project(":spring-tx"))  // for JPA, @Transactional support
	optional("jakarta.transaction:jakarta.transaction-api")  // for @jakarta.transaction.Transactional support
	optional("javax.cache:cache-api")  // for JCache aspect
	testImplementation(project(":spring-core"))  // for CodeStyleAspect
	testImplementation(project(":spring-test"))
	testImplementation(testFixtures(project(":spring-context")))
	testImplementation(testFixtures(project(":spring-context-support")))
	testImplementation(testFixtures(project(":spring-core")))
	testImplementation(testFixtures(project(":spring-tx")))
	testImplementation("jakarta.mail:jakarta.mail-api")
	testCompileOnly("org.aspectj:aspectjrt")
}

eclipse.project {
	natures += "org.eclipse.ajdt.ui.ajnature"
	buildCommands = [new org.gradle.plugins.ide.eclipse.model.BuildCommand("org.eclipse.ajdt.core.ajbuilder")]
}
